Using this library, you can host your application and query against it with requests. Then decode the responses, and assert what is returned.
use Router;
use get;
use TestServer;
async
async
The TestServer
can run requests directly against your application with a mocked network,
or the application can run on a random port (with real network reqeusts being made).
In both cases allowing multiple servers to run in parallel, across your tests.
This behaviour can be changed in the TestServerConfig
, by selecting the transport
to be used.
Axum Compatability
Axum Test requires the latest version of Axum (0.7).
Axum Version | Axum Test Version |
---|---|
0.7 (latest) | 14+ (latest) |
0.6 | 13.4.1 |
Example
You can find a thorough example in the /examples folder.
Request building
Querying your application on the TestServer
supports all of the common request building you would expect.
- Serializing and deserializing Json and Form content using Serde
- Cookie setting and reading
- Access to setting and reading headers
- Status code reading and assertions
- Assertions for defining what you expect to have returned
It also includes
- Saving cookies returned for use across future requests.
- Setting headers and query parameters for use across all TestRequests.
- Can optionally run requests using a real web server.
- Automatic status assertions for checking requests always succeed or fail.
- Prettifying the assertion output.
Crate Features
Here are a list of all features so far that can be enabled:
pretty-assertions
on by default, uses the pretty assertions crate for the output to theassert_*
functions.yaml
off by default, adds support for sending, receiving, and asserting, yaml content.msgpack
off by default, adds support for sending, receiving, and asserting, msgpack content.
Contributions
A big thanks to all of these who have helped!
Made with contrib.rocks.